﻿#pragma once

#include "geom/geom_curve_bezier.h"
#include "geom/geom_curve_bspline.h"
#include "geom/geom_surface_bspline.h"

namespace CAGD
{

class Approximate
{
  public:
    /**
     * @brief 3 维 n 次 Bezier 逼近.
     * @return
     * @param n
     * @param points
     * @see
     */
    static Handle(GeomBezierCurve) BezierCurve(int n, const std::vector<BPnt> &points);

    /**
     * @brief 3 维 deg 次 BSpline 逼近，使用 N 个控制点.
     * @return
     * @param deg
     * @param N
     * @param points
     * @see
     */
    static Handle(GeomBSplineCurve) BSplineCurve(int deg, int N, const std::vector<BPnt> &points);
};

} // namespace CAGD
